

#ifndef UC_GEPONC2D_H
#define UC_GEPONC2D_H

#include "zgepent2d.h"
#pragma pack (push, 8)

class UcGeCurve2d;

class
GE_DLLEXPIMPORT
UcGePointOnCurve2d : public UcGePointEnt2d
{
public:
    UcGePointOnCurve2d  ();
    UcGePointOnCurve2d  (const UcGeCurve2d& crv);
    UcGePointOnCurve2d  (const UcGeCurve2d& crv, double param);
    UcGePointOnCurve2d  (const UcGePointOnCurve2d& src);

    UcGePointOnCurve2d& operator =     (const UcGePointOnCurve2d& src);

    const UcGeCurve2d*  curve          () const;
    double              parameter      () const;

    UcGePoint2d         point          () const;
    UcGePoint2d         point          (double param);
    UcGePoint2d         point          (const UcGeCurve2d& crv, double param);

    UcGeVector2d        deriv          (int order) const;
    UcGeVector2d        deriv          (int order, double param);
    UcGeVector2d        deriv          (int order, const UcGeCurve2d& crv,
                                        double param);

    ZSoft::Boolean      isSingular     (const UcGeTol&  tol =
                                        UcGeContext::gTol) const;
    ZSoft::Boolean      curvature      (double& res);
    ZSoft::Boolean      curvature      (double param, double& res);

    UcGePointOnCurve2d& setCurve       (const UcGeCurve2d& crv);
    UcGePointOnCurve2d& setParameter   (double param);
};

#pragma pack (pop)
#endif

